﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using InnvoiceActual.Logica.GestorObject;
using InnvoiceActual.BaseDeDatos.innvoicedbDataSetTableAdapters;
using System.Data;
using System.Windows;
using MySql.Data.MySqlClient;

namespace InnvoiceActual.Logica.GestorDB
{
    public class CondicionDePagoDB
    {

        #region Property

        EmpresaCS empresa = EmpresaCS.Instance;

        #endregion


        public void addCondicion() { }

        public List<CondicionDePagoCS> obtenerCondicionDePago()
        {
            List<CondicionDePagoCS> misCondiciones = new List<CondicionDePagoCS>();
            condiciondepagoTableAdapter tablaCondicion = new condiciondepagoTableAdapter();

            tablaCondicion.Connection.Open();
            MySqlTransaction transaccion = tablaCondicion.Connection.BeginTransaction();

            try
            {
                DataTable miTablaresultado = tablaCondicion.GetData();

                foreach (DataRow condicionDePago in miTablaresultado.Rows)
                {
                    CondicionDePagoCS auxCondicionDePago = new CondicionDePagoCS();

                    auxCondicionDePago.Codigo_Empresa = Convert.ToInt16(condicionDePago["codigo_empresa"].ToString());
                    auxCondicionDePago.Codigo_pago = Convert.ToInt16(condicionDePago["codigo_condicion"].ToString());
                    auxCondicionDePago.Descripcion = condicionDePago["descripcion"].ToString();
                    auxCondicionDePago.Bonificacion = Convert.ToDouble(condicionDePago["bonificacion"].ToString());
                    auxCondicionDePago.Activo = Convert.ToByte(condicionDePago["activo"].ToString());

                    misCondiciones.Add(auxCondicionDePago);
                }

            }
            catch (Exception e)
            {
                MessageBox.Show("Class::CondicionDePago::obtenerCondicionDePago:: Error:  " + e.Message, "Error", MessageBoxButton.OK);
                transaccion.Rollback();
            }
            finally
            {
                tablaCondicion.Connection.Close();
            }

            return misCondiciones;
        }

        public CondicionDePagoCS GetCondicionDePagoPorCodigo(int codigo)
        {
            CondicionDePagoCS condicionDePago = new CondicionDePagoCS();
            
            condiciondepagoTableAdapter condicionDePagoTB = new condiciondepagoTableAdapter();

            condicionDePagoTB.Connection.Open();
            MySqlTransaction transaccion = condicionDePagoTB.Connection.BeginTransaction();

            try
            {
                DataTable resultadoConsulta = condicionDePagoTB.GetDataByCondicionesDePagoPorCodigo(empresa.CodigoEmpresa, codigo);

                if (resultadoConsulta.Rows.Count > 0)
                {
                    foreach (DataRow item in resultadoConsulta.Rows)
                    {
                        condicionDePago.Codigo_Empresa = Convert.ToInt16(item["codigo_empresa"].ToString());
                        condicionDePago.Codigo_pago = Convert.ToInt16(item["codigo_condicion"].ToString());
                        condicionDePago.Descripcion = item["descripcion"].ToString();
                        condicionDePago.Bonificacion = Convert.ToDouble(item["bonificacion"].ToString());
                        condicionDePago.Activo = Convert.ToByte(item["activo"].ToString());
                    }
                }
                else
                {
                    condicionDePago.Codigo_pago = -1;
                }
            }
            catch (Exception e)
            {
                MessageBox.Show("Class::CondicionDePago::GetCondicionDePagoPorCodigo(int codigo):: Error:  " + e.Message, "Error", MessageBoxButton.OK);
                transaccion.Rollback();
            }
            finally
            {
                condicionDePagoTB.Connection.Close();
            }

            return condicionDePago;
        }


    }
}
